﻿using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace 控件
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        // 处理按钮点击事件Submit_Click
        private void Submit_Click(object sender, RoutedEventArgs e)
        {
            // 获取输入的文本
            // string inputText = InputTextBox.Text;
            // 显示输入的文本
            MessageBox.Show($"您输入的文本是: ", "信息", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        // HighlightButton_Highlight 事件处理器
        private void HighlightButton_Highlight(object sender, RoutedEventArgs e)
        {
            // 获取触发事件的按钮,并确保它是 Button 类型
            if (e.Source is Button button)
            {
                MessageBox.Show($"触发高亮事件的按钮内容为: {button.Content}", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                // 根据按钮的内容进行不同的处理
                var content = button.Content;
                if (content.Equals("自定义高亮按钮1"))
                {
                    button.Background = Brushes.Yellow; // 设置背景色为黄色
                }
                else
                {
                    button.Background = Brushes.LightGreen; // 设置背景色为浅绿色
                }

            }

            // 确保 sender 是 HighlightButton 类型
            if (sender is not HighlightButton highlightButton)
            {
                // 提示父容器接收到了事件
                MessageBox.Show("父容器接收到了事件", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
                return; // 如果不是 HighlightButton，直接返回
            }
            else
            {
                // 设置按钮的背景色,根据按钮的内容进行区分
                HighlightButton btn = (HighlightButton)sender; // 设置背景色为黄色
                if (btn.Content.Equals("自定义高亮按钮1"))
                {
                    btn.Background = Brushes.Yellow;
                }
                else
                {
                    btn.Background = Brushes.LightGreen; // 设置背景色为浅绿色
                }
            }

               

            // 在这里处理Highlight事件
            // MessageBox.Show("按钮被高亮显示", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
        }
    }


    public class HighlightButton : Button
    {
        // 注册Highlight路由事件
        public static readonly RoutedEvent HighlightEvent = 
            EventManager.RegisterRoutedEvent(
            "Highlight", 
                RoutingStrategy.Bubble, 
                typeof(RoutedEventHandler), 
                typeof(HighlightButton)
            );

        // 提供事件的CLR包装
        public event RoutedEventHandler Highlight
        {
            add { AddHandler(HighlightEvent, value); }
            remove { RemoveHandler(HighlightEvent, value); }
        }

        // 触发Highlight事件的方法
        protected virtual void OnHighlight()
        {
            RoutedEventArgs args = new RoutedEventArgs(HighlightEvent, this);
            RaiseEvent(args);
        }

        // 鼠标点击时触发Highlight事件
        protected override void OnClick()
        {
            base.OnClick();
            OnHighlight();
        }
    }
}